package com.zhangtai.modules.dto;

import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import com.zhangtai.modules.entity.common.ContractUrlEntity;
import com.zhangtai.modules.entity.employee.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 
 * 
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2020-06-15 11:54:06
 */
@Data
public class EmployeeInfoDto implements Serializable {
	private static final long serialVersionUID = 1L;

	@TableId
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long oid;
	/**
	 * 姓名
	 */
	@ApiModelProperty(value="姓名",required = false)
	private String name;
	/**
	 * 性别
	 */
	@ApiModelProperty(value="性别",required = false)
	private String gender;
	/**
	 * 身份证号
	 */
	@ApiModelProperty(value="身份证号",required = false)
	private String idcard;
	/**
	 * 民族
	 */
	@ApiModelProperty(value="民族",required = false)
	private String nation;
	/**
	 * 籍贯省
	 */
	private String nativeplaceProvince;
	/**
	 * 籍贯
	 */
	@ApiModelProperty(value="籍贯",required = false)
	private String nativeplace;
	/**
	 * 国籍
	 */
	@ApiModelProperty(value="国籍",required = false)
	private String nationality;
	/**
	 * 手机
	 */
	@ApiModelProperty(value="手机",required = false)
	private String mobile;
	/**
	 * 政治面貌
	 */
	@ApiModelProperty(value="政治面貌",required = false)
	private String polity;
	/**
	 * 户口所在地
	 */
	@ApiModelProperty(value="户口所在地",required = false)
	private String regresidence;
	/**
	 * 家庭地址
	 */
	@ApiModelProperty(value="家庭地址",required = false)
	private String address;
	/**
	 * 个人电子邮件
	 */
	@ApiModelProperty(value="个人电子邮件",required = false)
	private String privatemail;
	/**
	 * 健康状态
	 */
	@ApiModelProperty(value="健康状态",required = false)
	private String healthstatus;
	/**
	 * 是否退伍兵
	 */
	@ApiModelProperty(value="是否退伍兵",required = false)
	private String disbandment;
	/**
	 * 婚姻状况
	 */
	@ApiModelProperty(value="婚姻状况",required = false)
	private String marital;
	/**
	 * 参加工作日期
	 */
	@ApiModelProperty(value="参加工作日期",required = false)
	private Date beginworkdate;
	/**
	 * 生日
	 */
	@ApiModelProperty(value="生日",required = false)
	private Date birthday;


	/**
	 * 0:社招，1：实习生
	 */
	@ApiModelProperty(value="0:社招，1：实习生",required = false)
	private String socialTrainee;
	/**
	 * 联系方式
	 */
	@ApiModelProperty(value="联系方式",required = false)
	private String contact;
	/**
	 * 拟录用部门
	 */
	@ApiModelProperty(value="拟录用部门",required = false)
	private String unitname;
	/**
	 * 拟录用公司
	 */
	@ApiModelProperty(value="拟录用公司",required = false)
	private String orgname;


	/**
	 * 部门id
	 */


	@ApiModelProperty(value="部门id",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long unitId;

	/**
	 * 公司id
	 */
	@ApiModelProperty(value="公司id",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long orgId;
	/**
	 * 拟录用岗位
	 */
	@ApiModelProperty(value="拟录用岗位",required = false)
	private String jobname;
	/**
	 * 职位id
	 */
	@ApiModelProperty(value="职位id",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long jobId;
	/**
	 * 预计入职时间
	 */
	@ApiModelProperty(value="预计入职时间",required = false)
	private Date hiredate;



	/**
	 * 职级
	 */
	@ApiModelProperty(value="职级",required = false)
	private String jobLevel;
	/**
	 * 职级id
	 */
	@ApiModelProperty(value="职级id",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long jobLevelId;

	@ApiModelProperty(value="职级类别",required = false)
	private Integer jobLevelType;
	/**
	 * 试用期
	 */
	@ApiModelProperty(value="试用期",required = false)
	private Integer probationday;


	/**
	 * 审核状态，0:未审核，1审核通过
	 */
	@ApiModelProperty(value="审核状态，0:未审核，1审核通过",required = false)
	private Integer status;
//	/**
//	 * 0:未提交，1：提交
//	 */
//	private Integer preSubmit;

	/**
	 * 招聘渠道
	 */
	@ApiModelProperty(value="招聘渠道",required = false)
	private String channel;

	private String code;

	/**
	 * 招聘网站
	 */
	@ApiModelProperty(value="招聘网站",required = false)
	private String recruitmentWeb;
	/**
	 * 推荐人-内部
	 */
	@ApiModelProperty(value="推荐人-内部",required = false)
	private String innerReferrer;
	/**
	 * 推荐人-外部
	 */
	@ApiModelProperty(value="推荐人-外部",required = false)
	private String outerReferrer;

	private String line;

	private String jobSystem;

	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	@ApiModelProperty(value="条线id",required = false)
	private Long lineId;

	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	@ApiModelProperty(value="体系id",required = false)
	private Long jobSystemId;

	@ApiModelProperty(value="原单位工资流水图片",required = false)
	private List<String> oldSalaryRecordUrl;

	/**
	 * 原单位薪资
	 */
	private BigDecimal oldSalary;

	@ApiModelProperty(value="原单位绩效，需要手动录入",required = true)
	private BigDecimal oldPerformance;


	@ApiModelProperty(value="一寸照片url",required = false)
	private String photoUrl;


	@ApiModelProperty(value="毕业证",required = false)
	private String graduationUrl;

	@ApiModelProperty(value="学位证",required = false)
	private String degreeUrl;

	@ApiModelProperty(value="离职证明",required = false)
	private String dimissionUrl;

	@ApiModelProperty(value="体检报告",required = false)
	private String healthUrl;

	@ApiModelProperty(value="身份证正反面",required = false)
	private List<String> idcardImgs;




	@ApiModelProperty(value="招聘负责人",required = false)
	private String principal;

	@ApiModelProperty(value="是否已发送offer,0:没发过，1：发过",required = false)
	private Integer isOffer;



	@ApiModelProperty(value="教育信息",required = false)
	private List<EmployeeEducationEntity> employeeEducation; //教育信息
	@ApiModelProperty(value="政治面貌",required = false)
	private List<EmployeeInorgnameEntity> employeeInorgname; //政治面貌
	@ApiModelProperty(value="工作履历",required = false)
	private List<EmployessSocietyexperienceEntity> employeeSociety; //工作履历
	@ApiModelProperty(value="家庭成员",required = false)
	private List<FamilyMemberEntity> familyMember;//家庭成员

	private OldEmployeeDto oldEmployeeDto; //复职员工

	@ApiModelProperty(value="员工合同记录",required = false)
	private List<ContractUrlEntity> contractList;//员工合同记录


	/**
	 * 甲方主体id
	 */
	@ApiModelProperty(value="甲方主体id",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long employerCompanyId;

	/**
	 * 甲方主体名称
	 */

	@ApiModelProperty(value="甲方主体名称",required = false)
	private String employerCompany;

	/**
	 * 合同生效日期
	 */
	@ApiModelProperty(value="合同生效日期",required = false)
	private Date contractBeginDate;
	/**
	 * 合同截止日期
	 */
	@ApiModelProperty(value="合同截止日期",required = false)
	private Date contractEndDate;





//	/**
//	 * 在公司的亲属姓名
//	 */
//	@ApiModelProperty(value="在公司的亲属名字",required = false)
//	private String relativeName;
//	/**
//	 * 亲属身份证
//	 */
//	@ApiModelProperty(value="公司的亲属身份证",required = false)
//	private String relativeIdCard;
//
//	/**
//	 * 亲属关系
//	 */
//	@ApiModelProperty(value="亲属关系",required = false)
//	private String relationship;
//
//	/**
//	 * 亲属所在单位
//	 */
//	@ApiModelProperty(value="亲属所在单位",required = false)
//	private String relativeUnit;

	@ApiModelProperty(value="工作地点",required = false)
	private String workAddress;

	/**
	 * 0:新员工，1：复职员工，2：旧员工
	 */
	@ApiModelProperty(value="0:新员工，1：复职员工，2：旧员工",required = false)
	private Integer isReinstate;


	@ApiModelProperty(value="备注",required = false)
	private String remark;
	/**
	 * 转正日期
	 */
	@ApiModelProperty(value="转正日期",required = false)
	private Date regularDay;

    /**
     * 0:转正 未处理，1：已处理
     */
	@ApiModelProperty(value="转正状态0:转正 未处理，1：已处理",required = false)
    private Integer regularIsDone;

	/**
	 * 处理状态 0、SSC处理中 1、评分审核中 2、薪酬核定中 3、员工发起中 4、BPM审批中 5、已办结
	 */
	@ApiModelProperty(value="处理状态 0、SSC处理中 1、评分审核中 2、薪酬核定中 3、员工发起中 4、BPM审批中 5、已办结",required = false)
    private Integer dealStatus;

	/**
	 * 用户是否填写
	 */
	@ApiModelProperty(value="用户是否填写,0：未填写，1：已填写",required = false)
	private Integer isMemberDone;
	/**
	 * 是否确最终确认入职
	 */
	@ApiModelProperty(value="0：已确认，1：未确认",required = false)
	private Integer isHireDone;

	@ApiModelProperty(value="合同状态，0：合同未发送，1：合同已发送，2合同已签署",required = false)
	private Integer isSendContract;
	
	@ApiModelProperty(value="员工编号",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long employeeOid;

	@ApiModelProperty(value="退伍军人编号",required = false)
	private String veteranNum;

	@ApiModelProperty(value="终止备注",required = false)
	private String endRemark;

	@ApiModelProperty(value="新员工录入Bpm链接",required = false)
	private String checkUrl;

	@ApiModelProperty(value = "入职日期修改状态", required = false)
	private Integer updateEntryStatus;

	@ApiModelProperty(value = "入职日期修改记录str", required = false)
	private String updateEntryStr;

	@ApiModelProperty(value="oa账号",required = false)
	private String useraccount;
	/**
	 * 劳动合同/实习/返聘期限期限
	 */
	@NotNull(message = "劳动合同/实习/返聘期限期限不能为空")
	@ApiModelProperty(value="劳动合同/实习/返聘期限 ，选择列表：1：1个月，2：2个月，3：3个月，4：半年，5：1年，6：2年，7：3年",required = false)
	private Integer  laborContractYears;

	@ApiModelProperty(value="是否管培生，2：不是，1：是",required = false)
	private Integer isManagementTrainee;

	@ApiModelProperty(value="职称证书",required = false)
	private List<String>  credential;

	@ApiModelProperty(value="其他附件",required = false)
	private List<String> attachments;

	@ApiModelProperty(value = "员工状态，2：在职，9：实习，3,4,5,6：离职", required = false)
	private String employeestatus;

	@ApiModelProperty(value = "亲属报备", required = false)
	private List<RelativeRecordsEntity> relativeRecordsEntities;

	@ApiModelProperty(value = "转正bpm查看链接")
	private String regularCheckUrl;

	@ApiModelProperty(value = "0:待发起 ，1：已发起待审批，2：审批完成，3：作废,")
	private Integer regularBpmStatus;

	@ApiModelProperty(value = "0：全日制用工，1：非全日制用工，2：劳务派遣用工 ，3：退休返聘，4：管培生，5：实习生")
	private String jobType;


	@ApiModelProperty(value="是否异地代缴社保，0：不是，1：是",required = false)
	private Integer isRemoteSocialSecurity;

	@ApiModelProperty(value="代缴市",required = false)
	private String socialSecurityCity;

	@ApiModelProperty(value="代缴省",required = false)
	private String socialSecurityProvince;

	/**
	 * 离职日期
	 */
	private Date dimissionTime;


	/**
	 * 专业类型
	 */
	private String professionalType;
	/**
	 * 岗位星级
	 */
	private String positionStar;
	/**
	 * 是否复职
	 */
	private String reinstatement;
	/**
	 * 档案编号
	 */
	private String fileNumber;


	/**
	 * 档案地址
	 */
	private String recordFileAddress;

	@ApiModelProperty(value = "是否公司负责人，null：不是，1：是", required = false)
	private String iscentreprincipal;

	@ApiModelProperty(value = "是否部门负责人，null：不是，1：是", required = false)
	private String isdepartmentprincipa;

}
